#include <iostream>
#include <string>
#include <vector>
#include <fstream>

#include "/home/ys/linux_-demo/Project_Muduo/source/server.hpp"

static bool WriteFile(const std::string &filename, const std::string &buf) /*向文件写入信息*/
{
    std::ofstream ofs(filename, std::ios::binary | std::ios::trunc); // binary原始二进制操作，trunc覆盖写
    if (ofs.is_open() == false)
    {
        ERROR_LOG("OPEN FILE FAILED!====%s", filename);
        return false;
    }
    ofs.write(buf.c_str(), buf.size()); // 将buf中的数据写入文件filename
    if (ofs.good() == false)
    {
        ERROR_LOG("WRITE FILE FAILED!====%s", filename);
        ofs.close();
        return false;
    }
    ofs.close();
    return true;
}

static bool ReadFile(const std::string &filename, std::string *buf) /*读取文件所有内容,将读取的内容放在Buffer*/
{
    std::ifstream ifs(filename, std::ios::binary);
    if (ifs.is_open() == false)
    {
        ERROR_LOG("OPNE FILE FAILED!====%s", filename);
        return false;
    }
    size_t fsize = 0;
    ifs.seekg(0, ifs.end); // 将文件的起始指针移至最后
    fsize = ifs.tellg();   // 返回值是：当前位置相较于起始位置之间一共有多少字节数
    ifs.seekg(0, ifs.beg); // 将文件指针重新范围到开始位置

    buf->resize(fsize);
    ifs.read(&(*buf)[0], fsize);
    if (ifs.good() == false)
    {
        ERROR_LOG("READ FILE FAILED!====%s", filename);
        ifs.close();
        return false;
    }
    ifs.close();
    return true;
}
int main()
{
    std::string str;
    ReadFile("/home/ys/linux_-demo/Project_Muduo/example/5_evenfd.cc", &str);
    WriteFile("./read_test", str);
    std::cout << str << std::endl;

    return 0;
}